#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;
const int N=30;
const int M=2*1e4+10;

int n,m;

int st[N][N];
int cnt[N][N];
int s[M];


string str;
void update(int l,int r,int v)
{
	l=max(0,l),r=min(r,n-1);
	for(int i=l;i+2<=r;i++)
	{
		int a=s[i],b=s[i+1],c=s[i+2];
		if(a!=b && b==c)
		{
			cnt[a][b]+=v;
			if(cnt[a][b]>=m)
				st[a][b]=1;
		}
	}
	
}
int main()
{
	
	cin>>n>>m;
	cin>>str;
	for(int i=0;i<n;i++)
	{
		s[i]=str[i]-'a';
//		cout<<s[i];
	}
//	cout<<endl;
	update(0,n-1,1);
	for(int i=0;i<n;i++)
	{
		int t=s[i];
		update(i-2,i+2,-1);
		for(int j=0;j<26;j++)
		{
			if(j!=t)
			{
				s[i]=j;
				update(i-2,i+2,1);
				update(i-2,i+2,-1);
			}
		}
		s[i]=t;
		update(i-2,i+2,1);
	}
	vector<string> ret;
	for(int i=0;i<26;i++)
	{
		for(int j=0;j<26;j++)
		{
//			cout<<cnt[i][j]<<endl;
//			cout<<st[i][j]<<endl;
			if(st[i][j])
			{
				string t;
				t.push_back(i+'a');
				t.push_back(j+'a');
				t.push_back(j+'a');
				ret.push_back(t);
			}
		}
	}
	cout<<ret.size()<<endl;
	for(int i=0;i<ret.size();i++)
	{
		cout<<ret[i]<<endl;
	}
	return 0;
}
